A “USB flash drive” is a portable, read/write, non-volatile, solid-state memory device that may be connected to and accessed over a Universal Serial Bus (USB) connection. A USB flash drive is also sometimes referred to as a “USB key”, “pen drive”, “Thumb Drive®”, “DiskOnKey®”, and “Jump Drive®”. The popularity of USB flash drives has grown rapidly, as has USB flash drive capacity. A USB flash drive is a specific instance of a larger class of devices referred to as “USB mass storage devices.”
The generic name of “USB flash drive” used to refer to these types of USB mass storage devices comes from the type of non-volatile, solid state memory used as the medium in which to store the data they contain. USB flash drive sizes have grown rapidly, tracking the increased density of available flash memory devices, and are currently available in memory capacities as large as 64 gigabytes. USB flash drive devices typically contain one or more flash memory devices, in addition to a media controller and a USB device controller. The media controller and USB device controller acts as an interface between the USB connection with the host device and the flash memory devices use for data storage.
A USB host device such as, for example, a laptop, notebook, netbook or desktop personal computer (PC); a personal digital assistant (PDA), a cellphone, or other intelligent device interfaces to a USB flash drive through a host controller and host driver software. The USB host controller communicates with the USB device controller in the USB flash drive over a multi-wire connection that includes power, ground, and data signals.
Flash memory is employed in USB-connected mass storage devices because of its high memory density, non-volatile storage, and relative low cost. The address space of a flash memory device is read or written in units of pages, but is erased only in units of whole blocks. Current and future flash memory devices may employ various page sizes such as pages of 528 or 2112 bytes, which are only a couple of the possible choices, and pages may include non-user information such as error correction code and address mapping information. Current block sizes range from, for example, 16 kilobytes to 256 kilobytes and future block sizes may be different, where each block encompasses a number of pages. Total flash drive device memory capacities currently range from less than 128 kilobytes to 64 gigabytes, and the flash drives may be constructed using a number of flash memory chips to achieve such capacities.
Flash memory differs from other forms of Electrically Erasable Read-Only Programmable Memory (EEPROM) in that it cannot be erased by individual memory locations. Before new information can be written into the locations of a previously used block, the entire block of the memory space must be erased. The time needed to erase a block of flash memory is typically significantly larger that write or read access times. While read access time for NAND-type flash memory devices is typically measured in nanoseconds, the amount of time needed to erase a block of flash memory prior to a write may take several milliseconds. During the period when the block of flash memory is being erased, the entire block is unavailable for read/write access. Therefore, block erase time is a significant factor that limits the ability to write data to memory in systems that employ flash memory devices. To improve the throughput of a flash drive, controller manufacturers may control a number of banks of flash memory and interleave the accesses. Mass storage devices known as “solid state disks,” designed to replace magnetic disk or “hard disk” storage, may employ a “translation table” that is used to translate logical addresses to physical addresses of the blocks of flash memory, to avoid the delays in accessing blocks of flash memory that are temporarily unavailable due to the need to erase memory blocks before they are re-written. Such a table requires additional storage in the solid state disk for the translation table, in addition to the sizable amount of memory normally present for temporary buffers used to hold data waiting to be written to the flash memory array.
Flash memory has a limited life when compared to other forms of read-write memory. Many single-level cell (SLC) flash memory devices are guaranteed for at least 100,000 program/erase cycles. Frequent accesses to the same locations in memory due to, for example, operating system updates to file system data structures, however, can cause failure of flash memory devices within an unacceptably short period of time. Memory management techniques such as dynamic and static “wear-leveling” are frequently used to extend the life of flash memory devices when they may be subjected to such frequent program/erase cycles.
In an ideal situation, consecutive requests would be directed to different banks. In that case, the aggregate throughput is approximately the number of banks times the throughput of each bank. In reality, requests may come in any order and bank conflicts may arise. The existing bulk-only transport (BOT) protocol of the USB standard is an in-order protocol, in which the command phase and data phase of an earlier transaction must be finished before the command phase of the next transaction can begin. While present day flash-based solid state drives (SSDs) do include temporary storage for pending commands, conventional USB flash drives do not use on-chip buffers to hold data for commands/transactions for which the required banks are not available, and throughput for such devices is degraded. Sufficient buffer memory must then be available to store all of the data for commands waiting for access to the required banks, and the cost of such buffers becomes prohibitively expensive.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.